**************************************************************************
				    RS232
				Version  1.01
			      Ring  Development
			   Maple Grove,  Minnesota
**************************************************************************
	 The files created during extraction are as follows :      

	 RS232.    DOC              34840
	 RS232.    EXE              15620
	 RS232A.   EXE               7920
	 XT.       EXE               3720
	 TY.       EXE               7620
	 TYBIG.    EXE               9240
	 ADDLINES. EXE               6525
**************************************************************************

			      TABLE  OF  CONTENTS
			      -------------------

    1    Introduction
	 1.1  Program Installation
    2    RS-232 Basics
    3    RS232 Program Usage
	 3.1  Cabling to PC
	 3.2  Theory of Operation
	 3.3  User Interface
	 3.4  Command Line Arguments
	 3.5  If you have a real slow PC and/or fast baud rate - Overrun Error
    4    Utility Program Usage
	 4.1  RS232A
	 4.2  XT
	 4.3  TY
	 4.4  TYBIG
	 4.5  ADDLINES

**************************************************************************
    1    INTRODUCTION

	 The RS232 program here should enable you to debug most of your
	 RS-232 problems much faster than before. With the program, you
	 can actually see the data transmitted in both directions on a real
	 time basis. The program also supports the monitoring of all hardware
	 lines for those nasty hardware handshaking problems.

	 5 utility programs are also provided to aid in wading through the
	 data generated. These utilities are described in Section 4.

	 There are no hardware changes needed in the PC, the program does
	 all the monitoring necessary through the 2 COM ports. The program
	 can be used if your PC has only 1 COM port, though the program
	 will give the most beneficial information if you have 2. Nowadays,
	 a second COM port can be added to any PC for a minimum investment.

	 The hardware needed to use this program is a simple homemade cable
	 that you create. The cable you need can be probably be built in an
	 hour from spare parts lying around. Section 3.1 discusses the cable
	 that most likely will be the one you need.

   **************************************************************************
   'RS232' is an actual working RS-232 Bus Analyzer. A 'Bus Analyzer' program
   is simply a program that captures an RS-232 communication between two
   devices (i.e. computer and modem). This is extremely useful when trying to
   debug any RS-232 protocol problems. This is the type of program that if you
   are not sure what it does, you probably don't need it; but if you do need it
   and realize you need it, you absolutely have to have it and can't get along
   without it.

   The file 'RS232.DOC' describes how to use the RS232 program and the supplied
   utilities.

   The RS232 program will use all existing conventional RAM for the read buffer,
   up to 500,000+ bytes on a 640K PC.

   The RS232 program has been highly optimized in assembly language for the
   best possible performance, enabling capture at 19,200 baud on an 8088 XT
   and 57,600 baud on an AT or higher PC.

   The RS232 program has the ability to search for specific ASCII or Hex data
   and can also write the read buffer to disk for viewing at a later date.

   The program monitors and displays both ASCII and hex simultaneously as the
   data comes across the line, in both directions, all in real time. The program
   also displays whether any parity or framing errors have occurred and monitors
   the status of all hardware handshaking lines if so desired.

   If there are any features that are missing that you would like, please write
   or call and I will certainly consider putting them in the next release.

   If you use the programs and find that they greatly speed up your RS-232
   debugging, the meager registration fee of $20 would be greatly appreciated.
   If you do register, you will be given printed documentation and a free
   upgrade when the next release is complete.

   NOTE : If you have any problems with 'Overrun Error', see section 3.5 in
          RS232.DOC concerning SMARTDRV and other potential problems. I recommend
          not using SMARTDRV with this program. I also recommend not running this
          program under Windows, it should be run from the DOS command line.

   Thank you for your interest in the RS-232 Bus Analyzer.


    1.1  PROGRAM INSTALLATION

	 Installing the RS232 program and the associated utilities is quite
	 simple. It is simply a matter of copying the .EXE files to any
	 directory where you want to run the program(s). A more versatile
	 directory would be a directory that is already in the 'PATH' of
	 the PC. This enables operation of the program(s) from any place
	 on the disk. A typical directory in the PATH is \DOS.

	 To copy the program(s) to the \DOS directory :

	 1) COPY *.EXE \DOS        (copy files to \DOS)

	 To copy the program(s) to a new directory (ex \RS232) :

	 1) MD \RS232              (make RS232 directory)
	 3) COPY *.EXE \RS232      (copy files to \RS232)


**************************************************************************
    2    RS-232 BASICS

	 RS-232 is a communication standard that has existed for many
	 years. It's main purpose is to transfer data from one device
	 to another. For instance, a tester to a host computer so the
	 computer can store the test results on disk.

	 The standard RS-232 connector has 25 pins, though a lot of
	 PC's have a 9 pin connector. The pin assignments for each
	 signal is as follows (for 25 and 9 pin connectors) :

				     TABLE  I

	 SIGNAL                      PIN # (25)   PIN # (9)     IN/OUT
	 -------------------------------------------------------------
	 Ground                          1           N/A          --
	 Transmit Data                   2            3           Out
	 Receive Data                    3            2           In
	 Request to Send     (RTS)       4            7           Out
	 Clear to Send       (CTS)       5            8           In
	 Data Set Ready      (DSR)       6            6           In
	 Signal Ground                   7            5           --
	 Data Carrier Detect (DCD)       8            1           In
	 Data Terminal Ready (DTR)      20            4           Out
	 Ring Indicator      (RI)       22            9           In

	 Note that besides receive/transmit data, there are 2 output
	 lines and 4 input lines. These are used for modem control and
	 hardware handshaking, which will be discussed later.

	 The simplest communication hookup has 3 wires; transmit data,
	 receive data, and signal ground. The transmit and receive lines
	 need to be crossed (whether in the connecting cable or internal
	 to the either device). See Figure 1. This is so the transmit
	 line of device 1 is tied to the receive line of device 2, and
	 vice versa.

	 This configuration only supports software handshaking. Suppose
	 device 1 transmits a block of data to device 2. Once device 2 has
	 received the data, it transmits back to device 1. Device 2 can
	 transmit a character meaning "OK, send the next block of data" or
	 transmit a character meaning "I don't like the data, send that last
	 block of data again". The actual protocol used is determined by
	 the software running on both devices.


	 DEVICE 1 (25 Pin)                         DEVICE 2 (25 Pin)

	 PIN  2----------------\  /--------------------PIN  2     Transmit
				\/
				/\
	 PIN  3----------------/  \--------------------PIN  3     Receive


	 PIN  7----------------------------------------PIN  7     Signal GND

				 (FIGURE 1)


	 Another configuration uses 5 wires and this is used primarily
	 for a hardware handshaking protocol. It uses the 3 wires in
	 Figure 1 and also the 2 wires shown in Figure 2.


	 DEVICE 1 (25 Pin)                         DEVICE 2 (25 Pin)

	 PIN  4----------------\  /--------------------PIN  4     RTS
				\/
				/\
	 PIN  5----------------/  \--------------------PIN  5     CTS

				 (FIGURE 2)

	 From Table I above, you see that pin 4 (RTS) is an output signal
	 and pin 5 (CTS) is an input signal. No data is transferred through
	 these pins. They are just control lines using a specific voltage
	 level for the high state and another voltage level for the low
	 state. The software running in device 1 can program pin 4 to be
	 high or low and then device 2 can read this value as high/low
	 and act accordingly. Here is a typical example. Suppose device 1
	 is a large mainframe and device 2 is a tester of some sort. Now
	 assume that there are many testers (say 10) and all are hooked
	 up to our mainframe (one tester on 10 different mainframe COM
	 ports), our central data gathering point. It would be difficult
	 for our mainframe to gather data on all 10 testers simultaneously,
	 so we implement a hardware handshaking protocol. Our protocol says:
	 "A tester can not transmit it's test results until it sees the CTS
	 line go high". If the CTS line is low, our tester will not transmit
	 it's test results. So now, all our mainframe software has to do is:

	 1)  Set the RTS line on the port for tester 1 high, this sets
	     the CTS line high at tester 1.
	 2)  Tester 1 sees that CTS has gone high, then it starts its
	     transmission of the test results.
	 3)  After completion of the test results, set the RTS line low
	     for tester 1. This will inhibit tester 1 from further
	     transmissions.
	 4)  Now set the RTS line for tester 2, and repeat the above
	     steps for all 10 testers.

	 Pins 20 and 6 may also be used as pins 4 and 5 were above.
	 Another possible use for the input pins is to connect an
	 input pin to a +5V signal in the remote device (for example,
	 a power supply voltage). This is convenient if the remote
	 device is not always powered on. Your program in essence can
	 monitor the power supply of the remote device and know when
	 it is powered up and safe to 'talk' to.

	 Pins 8 (DCD) and 22 (RI) are normally used in communicating
	 with a modem. Data Carrier Detect is set high by the modem
	 when it is talking to another modem. Ring Indicator is set high
	 by the modem when there is an incoming call.


**************************************************************************
    3    RS232 PROGRAM USAGE

    3.1  CABLING TO PC

	 The cabling to the PC can be as simple or complex as the need
	 dictates. Refer to section 3.2 for more details. If your system
	 only has a 3 wire protocol, the cabling will be very simple.
	 The top 7 wires shown are all optional (for a 3 wire software
	 handshaking protocol).  The cable will be wired as follows
	 (all pin numbers assume a 25 pin connector, use TABLE I above
	 for 9 pin connector conversions):

	 NOTE : If you are debugging a hardware handshaking problem,
		then obviously some of the 'optional' wires shown below
		are actually necessary.


	   25 Pin MALE    ***STRAIGHT THROUGH CABLE***   25 Pin FEMALE

	   =======  OPTIONAL WIRES ========

					   CHASSIS GND
	   PIN  1----------------------------------------PIN  1
					   RTS
	   PIN  4----------------------------------------PIN  4
					   CTS
	   PIN  5----------------------------------------PIN  5
					   DSR
	   PIN  6----------------------------------------PIN  6
					   DCD
	   PIN  8----------------------------------------PIN  8
					   DTR
	   PIN 20----------------------------------------PIN  20
					   RI
	   PIN 22----------------------------------------PIN  22


	   =======  REQUIRED WIRES ========

					   XMIT
	   PIN  2---+------------------------------------PIN  2
		    |
  TO                |                      REC                        TO
DEVICE     PIN  3-----------+----------------------------PIN  3     DEVICE
  1                 |       |                                         2
		    |       |              SIGNAL GND
	   PIN  7-------+--------------------------------PIN  7
		    |   |   |
		    |   |   |
	    ________|   |   |_________
	   |    ________|_________    |
	   |   |                  |   |
	   |PIN|                  |PIN|
	   3   7                  7   3

	COM 1 of PC            COM 2 of PC


				 (FIGURE 3)


	 So with this cable, PC COM 1 will monitor the transmit line of
	 device 1 (receive line of device 2) and PC COM 2 will monitor
	 the receive line of device 1 (transmit line of device 2). The
	 cabling scheme just inserts a straight through cable installed
	 between the 2 devices under test and then tap off the desired
	 signals and run them into the PC. Note that both signal lines
	 are wired to the PC COM ports pin 3 (receive line). This is
	 because the PC is never an active participant in the communi-
	 cation. It is only there to monitor the communication.
	 The computer needs 2 COM ports so it can monitor both halves of
	 the communication. (This program can be used with only 1 COM
	 port in the PC, see section 3.2 below).

	 Now, it should be easy to extend the above cabling to include
	 the desired hardware lines as needed. If you need to monitor
	 the CTS line of device 1, just add another wire from device 1,
	 pin 5 (CTS) to PC COM 1, pin 5, and so on.


    3.2  THEORY OF OPERATION

	 The theory behind this program is quite straight forward. The
	 purpose is to monitor the RS232 communication between 2 devices.
	 This is accomplished by inserting a cable in the line and
	 tapping off the desired signals and connecting them to the PC.
	 See section 3.1. The PC only 'listens', it never transmits any
	 data. It only monitors what is coming across the cable, in both
	 directions. For optimum benefit a PC with 2 COM ports is needed,
	 though you can use a PC with only 1 COM port. Also, each device
	 has 4 hardware lines and all 4 lines for both devices can be
	 monitored if your cable has the lines hooked up to the PC. If your
	 PC only has 1 COM port, you can only monitor one half of the
	 conversation. However, if you have 2 PC's and they each have 1 COM
	 port, you can use 1 PC to monitor the transmit line and the other
	 PC to monitor the receive line, though you will lose the timing
	 information. The timing of the communication can be quite useful.

	 See section 4.5 below. This is a portion of an actual Kermit file
	 transfer between 2 computers. PC COM 1 was listening to the computer
	 that was initiating the Kermit session and PC COM 2 was listening
	 to the computer that was being put in server mode. The computer on
	 COM 1 was invoking Kermit with the command ">SYSLIB2>KERMIT SV".
	 As you can see in the actual transmission timing :

	 Computer 1 : ">S"
	 Computer 2 : echos a 7F
	 Computer 1 : "YS"
	 Computer 2 : echos a ">"
	 Computer 1 : "L"
	 Computer 2 : echos a 7F
	 Computer 1 : "I"
	 Computer 2 : echos a "S"
	 Computer 1 : "B"
	 Computer 2 : echos a 7F
	 Computer 1 : "2"
	 Computer 2 : echos a "Y", etc.

	 You can see that the second computer is echoing back the command
	 it is receiving, with a few stray 7F characters embedding in
	 the data stream. The format of the data in section 4.5 is
	 exactly what will be logged to disk on a write data command.
	 The raw hex values will be on the left side and the ASCII
	 equivalents will be on the right side. If a data character is
	 a non ASCII character, it will be displayed as a period. They
	 will appear on the PC's display this way also.


    3.3  USER INTERFACE

	 To start the program, just enter RS232. The optional command line
	 arguments are discussed in section 3.4 and can also be seen by
	 entering 'RS232 -H'.

	 If the first thing displayed is 'Bad COM ports specified', the
	 likely cause is that your PC has only 1 COM port. The program
	 assumes that you are using 2 COM ports. You will need to use
	 the '-1' command line argument to use the program with this PC.
	 See section 3.2.

	 The display is split up into 2 areas, the top 20 lines of the
	 screen and the bottom 5. The top 20 lines is where the captured
	 data is displayed. They are shown in alternating colors of blue
	 and light blue for a color monitor or normal video and reverse
	 video for a monochrome monitor. See below for more discussion of
	 these top 20 lines.

	 The bottom 5 lines of the display is split up into 4 smaller areas.
	 The two sections on the left show available function keys for
	 performing specific tasks. The 8 function keys supported are :

	 F1  : Help    (Displays help screen)
	 F4  : Goto    (Go directly to a specific position in the read buffer)
	 F7  : Srch    (Search the read buffer for specific data)
	 F10 : EXIT    (Exit RS232 program, must confirm exit with 'Y')

	 Alt-F1  : Gather Data                       (Monitor ports for data)
	 Alt-F4  : Gather Data and Clear Read Buffer (Monitor ports for data)
	 Alt-F7  : Write the read buffer to disk.
	 Alt-F10 : Write the read buffer to disk and then Exit.

	 The next section on the left shows the present configuration of the
	 COM ports. The default setup is 9600 baud, 8 bit characters, no
	 parity and 1 stop bit. These can changed with the command line
	 arguments discussed in section 3.4.

	 The last section on the bottom displays the total read buffer
	 available in bytes, the number of bytes used, and the percentage.
	 Initially, the total read buffer is typically 450 - 500K in size
	 (on a 640K machine) with 0 bytes used and 0 %. After the program
	 loads into memory, it allocates all remaining conventional memory
	 as a read buffer. This behavior can be changed by using command line
	 argument '-K' discussed in section 3.4 below.


	 FUNCTION KEYS :

	 F1  -  HELP      Displays short help screen

	 F4  -  GOTO      This will let you jump around the read buffer
			  very easily. For example, if you have 350K used
			  in your read buffer, it is very slow to 'PG DOWN'
			  from beginning to end. After pressing F4, you
			  will get prompted for an offset. Enter the desired
			  offset from the beginning of the buffer, example :
			  215400. The number you enter will be rounded down
			  to the nearest multiple of 16.

	 F7  -  SRCH      This will let you search the read buffer for
			  specific data. You can search for ASCII text or
			  a hex pattern. An example of an ASCII text search
			  would be 'KERMIT FILE TRANSFER'. An example of a hex
			  pattern search would be '0120204A0D0A'. The hex
			  search above would search the read buffer for the
			  6 data bytes 01, 20, 20, 4A, 0D, 0A. NOTE! : The
			  search takes place from the present display position
			  to the end of the read buffer. After a successful
			  search, pressing 'ALT N' will find the next occur-
			  rence of the search, from the new display position
			  to the end of the read buffer.

			  Pressing 'ALT A' will prompt directly for an ASCII
			  text search and pressing 'ALT H' will prompt
			  directly for a hex pattern search.

			  The search does not distinguish between COM 1 and
			  COM 2, the data is treated as one long buffer.

			  For a text search, the search is case sensitive.
			  'FILE' is different than 'file'.

			  For a hex pattern search, the program only accepts
			  the characters 0-9, A-F (and also a-f). All other
			  characters are not allowed and the program will
			  tell you that there is an illegal character in the
			  string.

	 F10 -  EXIT      Press this to exit RS232. You will be asked 'Are
			  you sure ? (Y/N)'.  Press 'Y' to confirm the exit.
			  Any key other than 'Y' is treated as 'N'.


     ALT-F1  -  GATHER DATA
			  This puts the PC in the mode to actually capture
			  data. If there is already data in the read buffer,
			  any new data is appended to the end of the present
			  data. Pressing 'ESC' will discontinue 'gather data'
			  mode. If the blinking 'PRESS ESC' is annoying,
			  pressing any other key will turn off the blinking.
			  In this mode, the bottom left portion of the
			  display has changed to indicate the status of both
			  COM ports.  The bottom left portion of the screen
			  now looks something like :

			  --------------------------------------------------
			  1  CTS : L   PAR : -     2  CTS : L   PAR : -
			     DSR : L   FRM : -        DSR : L   FRM : -
			     DCD : L                  DCD : L
			      RI : L                   RI : L

			  This is showing the status of the 4 hardware lines
			  CTS, DSR, DCD, and RI for both COM ports. If the
			  line is low, you will see a normal video 'L'. If
			  the line is high, you will see a reverse video 'H'.

			  This is also showing whether a parity (PAR) or
			  framing (FRM) error has happened on either port.
			  If no error has occurred, you will see a normal
			  video '-'. If a parity/framing error has occurred,
			  you will see a reverse video block in place of the
			  '-' and also a 'latched' solid block 1 space to the
			  right of the normal display.

			  The hardware lines and the parity/framing errors
			  are updated continuously.

     ALT-F4  -  GATHER DATA AND CLEAR READ BUFFER
			  This is the same as ALT-F1, except that if there is
			  any data in the read buffer, the old data in the
			  read buffer is discarded.

     ALT-F7  -  WRITE BUFFER TO DISK
			  This will write the present read buffer to disk.
			  The default file name is 'RS232.LOG'. If 'RS232.LOG'
			  already exists on disk, then the old file contents
			  will be lost and overwritten with the new data.
			  The default file name can be changed by using the
			  '-F' command line argument or by pressing the
			  'ALT F' key. Pressing 'ALT F' will prompt you for
			  a new filename. A full drive:\pathname\filename
			  can be used, if desired.

     ALT-F10 -  WRITE BUFFER TO DISK AND EXIT
			  After writing the read buffer to disk, RS232 will
			  terminate.

	 OTHER 'ALT' KEYS :

	 ALT 'A'          Prompt directly for an ASCII text search.

	 ALT 'F'          Change the default filename for logging data.

	 ALT 'H'          Prompt directly for a hex pattern search.

	 ALT 'L'          Toggle between upper/lower case for hex values
			  in the display.

	 ALT 'N'          Search for the next occurence of a previously
			  successful search.


	 As mentioned above, the top 20 lines of the screen is where the
	 captured data is displayed. At most, 160 bytes of the read buffer
	 can be shown at a given time. The screen is broken down into 10
	 sets of 2 lines each. These 2 lines (top for COM 1, next for COM 2)
	 will show 16 bytes of the read buffer. The data will be on the top
	 line if it came in COM 1 or the second line if it came in on COM 2.

	 From the snapshot shown below, COM 1 was receiving 2E, 61, 73, 59,
	 and 0D (line a). Then COM 2 started to get 7F, 01, 2A, etc up to
	 23 (line b). COM 2 was still receiving the data 26, 3B, 0D, 00 (line
	 d). And finally, COM 1 received the data 01, 30, 20, etc (line c).

(a)      2E 61 73 59 0D                                   1  .asY.
(b)                     7F 01 2A 20 53 7E 2A 20 40 2D 23  2       ..* S~* @-#
(c)                  01 30 20 59 7A 2A 20 5C 40 2D 23 26  1      .0 Yz* \@-#&
(d)      26 3B 0D 00                                      2  &;..

	 Every 2 lines in the display make up real time, left to right. There
	 can never be 2 characters above each other in the display for COM 1
	 and COM 2 in the same time period. This is not happening above. Lines
	 a & b make up 1 time period while lines c & d make up the next time
	 period.  The example below could never happen.

				    || ||    ||
(e)      2E 61 73 59 0D             20 41    43           1  .asY.     A C
(f)                     7F 01 2A 20 53 7E 2A 20 40 2D 23  2       ..* S~* @-#
(g)                  01 30 20 59 7A 2A 20 5C 40 2D 23 26  1      .0 Yz* \@-#&
(h)      26 3B 0D 00                                      2  &;..


	 When you are gathering data, nothing else can be done until you
	 press ESC to end the gather data session. The PC is dedicated to
	 monitoring both COM ports for activity. For example, you cannot
	 write the read buffer to disk while in gather data mode. The display
	 is updated continually with new data as it comes in. When ESC is
	 pressed to end 'gather data', then you can write the buffer to disk,
	 search for data, etc. When you are not gathering data, any incoming
	 data to the PC is not collected.

	 You can scroll through the read buffer by using the HOME, END, PG UP,
	 PG DOWN, and UP/DOWN arrows. Pressing the HOME key will move you to
	 the beginning of the read buffer (offset 0). Pressing the END key
	 will move you to the end of the read buffer. Pressing the PG UP /
	 PG DOWN keys will move you up/down 160 bytes in the buffer, and the
	 UP/DOWN arrows will move you up/down 16 bytes in the buffer.


    3.4  COMMAND LINE ARGUMENTS

	 The command line arguments may use the '-' or '/' character,
	 be upper or lowercase, and must be separated by spaces. The
	 recognized arguments are:

	 -1           :   Only use 1 COM port for monitoring data. See
			  section 3.2 for more details.

	 -A           :   Mask off the most significant bit of all
			  incoming data.

	 -B<number>   :   Where <number> is any legal baud rate. The default
			  baud rate is 9600. The maximum baud rate supported
			  is 115200. If an illegal baud rate is entered, the
			  baud rate used is the closest one supported by the
			  system (PC).

	 -C<number>   :   Where <number> can be 5, 6, 7, or 8. This is
			  the of number of bits per character. The default
			  is 8.

	 -D           :   Disable screen update during 'gather data'. Use
			  this option if you ever see a blinking "OVERRUN
			  ERROR" message on the screen. (See section 3.5)

	 -F<text>     :   Where <text> is alternate file name for
			  writing the read buffer to the disk. The
			  default file name is 'RS232.LOG'.

	 -G           :   Go directly into gather data mode. This may be
			  useful if invoking RS232 from a .BAT file.

	 -H           :   Display the command line arguments.

	 -K<number>   :   Where <number> is the number of K-bytes of RAM
			  NOT to allocate as a read buffer. The default
			  is to allocate all remaining conventional memory
			  as a read buffer. This may be undesirable if you
			  have a TSR that requests some RAM when invoked.
			  EX : -K64 will leave 64K of RAM free.

	 -M<2 numbers>:   Where the two numbers are which 2 COM ports to
			  use. The possible options are 1, 2, 3, or 4. The
			  default is to use COM 1 and 2.
			  EX: -M13 to use COM 1 and COM 3.

	 -P<letter>   :   Where the possible letters are N, E, O, M, S.
			  This sets the parity to None, Even, Odd, Mark,
			  or Space. The default is None.

	 -S<number>   :   Where <number> can be 1 or 2. This is the number
			  of stop bits. The default is 1.


	 Example      :   RS232 -b19200 -pe -c7 -fdata.txt


    3.5  IF YOU HAVE A REAL SLOW PC AND/OR FAST BAUD RATE - OVERRUN ERROR

	 When the RS232 program is in 'gather data' mode, you may see
	 a blinking "OVERRUN ERROR" message. This happens when the PC
	 can not keep up the with data transfer taking place. The data
	 transfer shown in section 4.5 was captured at 19200 baud with
	 no problems on a 6 MHz AT PC. However, if you try to capture
	 115200 baud on a 4.77 MHz XT, you may have a problem.

	 Here's a general look at the processing performed:


	 LOOP FOREVER
	   scan keyboard                   (looking for ESC key to break out)

	   for both COM1 and COM2:
	      update status of 4 hardware lines    (high or low)
	      update parity and framing errors
	      check for overrun error

	      has a character arrived at either port ?
		if so
		  get the character
		  store character in read buffer
		  store whether it came in on COM 1 or COM 2
		  update the screen with the new data received  (***)
		end if
	   end for
	 END LOOP FOREVER


	 There are basically four ways to correct the "Overrun Error":
	 (In order of preference)

	 1) Disable most if not all TSRs that are running. These steal
	    precious clock cycles from the main program. SMARTDRV is an
	    especially bad one. SMARTDRV is commonly used with Windows
	    to speed up disk reads/writes, but is can take over control
	    of the CPU for hundreds of milliseconds which is just too long
	    for practically any baud rate that we are trying to capture.

	 2) Disable screen updating by using the -D command line option.
	    See *** above. Updating the screen is actually a rather
	    time consuming task, relative to the other processing.

	 3) Slow down the baud rate. Not at all unreasonable. For example,
	    you could debug a 38400 baud problem at 9600 baud and probably
	    be safe. This logic would only fail if you were debugging long
	    distance communications.

	 4) Buy a faster PC


**************************************************************************

    4    UTILITY PROGRAM USAGE

    4.1  RS232A.EXE

	 This program simply displays the current settings (how each
	 COM port is configured) for all 4 COM ports on a PC.  If a
	 given port doesn't exist, then 'NONE' is displayed for that port.
	 To run, just type 'RS232A' and return. A typical output is as
	 follows:

	 COM1:   0x03F8   9600 Baud   8 Bit Chars   1 Stop Bits   No Parity
	 COM2:   0x02F8   9600 Baud   8 Bit Chars   1 Stop Bits   No Parity
	 COM3:   None
	 COM4:   None

	 So this PC has 2 COM ports and both are configured for 9600,8,1,N.
	 The '0x03F8' is the base address of the port in the computer's
	 memory. The '0x' is a C programming convention for a hexadecimal
	 constant, so the base address of COM1 is 3F8 hex and the base
	 address of COM2 is 2F8 hex. These addresses are read from the
	 BIOS data area at 40h:0000h.


    4.2  XT.EXE

	 When RS232 logs data to the disk, the data file can be quite
	 large. A 500K byte read buffer in the program can result in
	 a 4.3M data file. This size file is usually impractical to
	 work with, so 'XT' will extract certain portions of the file
	 (actually, this program can be used on any ASCII file). 'XT'
	 requires 4 arguments on the command line:

	 1)  Source file name
	 2)  Destination file name
	 3)  Starting line number
	 4)  Ending line number

	 Entering less than 4 arguments will result in the following
	 display output:

	 Usage  : XT <source-file> <destination-file> <start-line> <end-line>
		  A '+' as the first char of the destination file will append
	 Example: XT DATA.TXT TEMP.TXT 1091 1584

	 Let's assume you have a very large 'RS232.LOG' data file but you
	 are only interested in lines 1211 through 1600 (See TY, TYBIG).
	 Use program XT to extract the desired lines as follows:

	 XT RS232.LOG RS232.TMP 1211 1600 <Return>

	 The program will then create file 'RS232.TMP' with the desired
	 lines from the original file. The original file is unchanged. If
	 the new file name already exists, the old file contents are lost,
	 unless the destination file has the read-only attribute set.


    4.3  TY.EXE

	 'TY' is a utility to look at any ASCII file on the computer's
	 display. The usage is TY <filename>. To view RS232.LOG, simply
	 enter 'TY RS232.LOG' <return>. Press function key F1 for help.
	 Some of the features are search capability, scroll left/right,
	 and go to any line number instantly. Also displayed is the
	 current line number and the total number of lines in the file.
	 This program attempts to load the entire file into memory, for
	 the fastest possible viewing. If the file size exceeds the
	 available RAM in the computer, the program will exit with an
	 out of memory error. If this error occurs, use program TYBIG
	 (see below). On a typical 640K PC, 550K is usually available
	 for applications, depending on the number of device drivers,
	 TSR's, etc.


    4.4  TYBIG.EXE

	 This program looks and acts exactly like TY, except that it is
	 used for viewing very large files. This program has to perform
	 disk I/O for some operations, and therefore is somewhat slower
	 than TY. Usage is TYBIG <filename>.


    4.5  ADDLINES.EXE

	 This program is used to alter the appearance of the 'RS232.LOG'
	 data file. Using this program on the data file makes it somewhat
	 more legible. The original data file is unchanged. Usage is
	 ADDLINES <Source-file> <Destination-file>. If the destination file
	 already exists the old file contents will be lost, unless the
	 destination file has the read-only attribute set.

	 Example : ADDLINES RS232.LOG RS232.TXT <Return>.

	 If the original RS232.LOG file looked something like this :

	 20 3E 53    59 53    4C    49    42    32    3E  1   >S YS L I B 2 >
		  7F       3E    7F    53    7F    59     2     .  > . S . Y
	    4B    45    52    4D 49    54    20    53     1   K E R MI T   S
	 7F    53    7F    4C       7F    49    7F    42  2  . S . L  . I . B
	 56    0D                                         1  V .
	    7F    3E 7F 45 7F 49 7F 20 7F 56 7F 0A 0D 7F  2   . >.E.I. .V....
							  1
	 4B 65 72 6D 69 74 2D 47 43 4F 53 20 56 33 2E 31  2  Kermit-GCOS V3.1
							  1
	 0A 0D 7F 53 65 72 76 65 72 20 6D 6F 64 65 0A 0D  2  ...Server mode..
	 01 30 20 49 7A 2A 20 5C 40 2D 23 26 31 7E 22 20  1  .0 Iz* \@-#&1~"
							  2
	 20 7A 5C 40 0D                                   1   z\@.
			7F 01 29 20 59 7E 2A 20 40 2D 23  2       ..) Y~* @-#
		  01 3F 20 52 3E 75 64 64 3E 69 72 73 3E  1     .? R>udd>irs>
	 5D 0D 00                                         2  ]..
	 70 65 74 65 72 73 6F 6E 3E 73 74 65 70 72 6F 74  1  peterson>steprot
							  2
	 2E 61 73 59 0D                                   1  .asY.
			7F 01 2A 20 53 7E 2A 20 40 2D 23  2       ..* S~* @-#
		     01 30 20 59 7A 2A 20 5C 40 2D 23 26  1      .0 Yz* \@-#&
	 26 3B 0D 00                                      2  &;..


	 then RS232.TXT would look like this :

	 20 3E 53    59 53    4C    49    42    32    3E  1   >S YS L I B 2 >
		  7F       3E    7F    53    7F    59     2     .  > . S . Y
	 --------------------------------------------------------------------
	    4B    45    52    4D 49    54    20    53     1   K E R MI T   S
	 7F    53    7F    4C       7F    49    7F    42  2  . S . L  . I . B
	 --------------------------------------------------------------------
	 56    0D                                         1  V .
	    7F    3E 7F 45 7F 49 7F 20 7F 56 7F 0A 0D 7F  2   . >.E.I. .V....
	 --------------------------------------------------------------------
							  1
	 4B 65 72 6D 69 74 2D 47 43 4F 53 20 56 33 2E 31  2  Kermit-GCOS V3.1
	 --------------------------------------------------------------------
							  1
	 0A 0D 7F 53 65 72 76 65 72 20 6D 6F 64 65 0A 0D  2  ...Server mode..
	 --------------------------------------------------------------------
	 01 30 20 49 7A 2A 20 5C 40 2D 23 26 31 7E 22 20  1  .0 Iz* \@-#&1~"
							  2
	 --------------------------------------------------------------------
	 20 7A 5C 40 0D                                   1   z\@.
			7F 01 29 20 59 7E 2A 20 40 2D 23  2       ..) Y~* @-#
	 --------------------------------------------------------------------
		  01 3F 20 52 3E 75 64 64 3E 69 72 73 3E  1     .? R>udd>irs>
	 5D 0D 00                                         2  ]..
	 --------------------------------------------------------------------
	 70 65 74 65 72 73 6F 6E 3E 73 74 65 70 72 6F 74  1  peterson>steprot
							  2
	 --------------------------------------------------------------------
	 2E 61 73 59 0D                                   1  .asY.
			7F 01 2A 20 53 7E 2A 20 40 2D 23  2       ..* S~* @-#
	 --------------------------------------------------------------------
		     01 30 20 59 7A 2A 20 5C 40 2D 23 26  1      .0 Yz* \@-#&
	 26 3B 0D 00                                      2  &;..
	 --------------------------------------------------------------------

